/**
 * ...扩展运算符用法
 * 1. 在数组中使用
 *    -  展开数据
 *    -  连接两个数组
 * 2. 在函数中使用  rest参数
 * 3. 在对象中使用
 *    - 构造字面量时使用展开语法,即复制对象  let p={...person,name:"玉石"};
 */

class Person extends React.Component{
	// 对标签苏醒进行类型,必要性限制
	static propTypes={
		name:PropTypes.string.isRequired,
		sex:PropTypes.string,
		age:PropTypes.number,
		speak:PropTypes.func,
	};
// 指定默认标签属性值
	static defaultProps={
		sex:"男",
		age:18
	};
	render(){
		const {name,age,sex}=this.props;
		return (
			<ul>
				<li>姓名:{name}</li>
				<li>年龄:{sex}</li>
				<li>性别:{age+1}</li>
			</ul>
		);
	}
}

const p={name:"李蕾",age:29,sex:"女"};
function speak() {
	console.log("我说话1了")
}
ReactDOM.render(<Person name="jerry" age={19} sex='男' speak={speak}/>,document.getElementById("test"));
// 批量传递props
ReactDOM.render(<Person {...p}/>,document.getElementById("test2"));
